package com.xmg.server.goods.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.xmg.server.goods.mapper.SkuPropertyValueMapper;
import com.xmg.shop.api.domain.SkuProperty;
import com.xmg.shop.api.domain.SkuPropertyValue;
import com.xmg.shop.api.service.ISkuPropertyValueService;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

/**
 * Created by KavenC on 2017/11/16.
 */
@Service
public class SkuPropertyValueServiceImpl implements ISkuPropertyValueService {

    @Autowired
    private SkuPropertyValueMapper skuPropertyValueMapper;

    @Override
    public List<SkuPropertyValue> selectByskuPropertyId(Long skuPropertyId) {
        return skuPropertyValueMapper.selectByskuPropertyId(skuPropertyId);
    }

    @Override
    public void deleteSkuValue(Long skuPropertyValueId) {
        skuPropertyValueMapper.deleteByPrimaryKey(skuPropertyValueId);
    }

    @Override
    public void save(Long skuPropertyId, Long[] skuPropertyValueIds, String[] skuValues) {
        Integer skuPropertyValIndex = null;
        if (skuPropertyValueIds != null) {
            for (int i = 0; i < skuPropertyValueIds.length; i++) {
                if (skuPropertyValueIds[i] == null) {
                    skuPropertyValIndex = i;
                    break;
                } else {
                    //获取有id的值与数据库进行判断是否相同,不同进行更新
                    SkuPropertyValue skuPropertyValue = skuPropertyValueMapper.selectByPrimaryKey(skuPropertyValueIds[i].longValue());
                    if (!skuValues[i].equals(skuPropertyValue)) {
                        skuPropertyValueMapper.updateSkuValue(skuValues[i], skuPropertyValueIds[i].longValue());
                    }
                }
            }
        }
        int valLength = skuValues.length;
        SkuPropertyValue skuPropertyValue = new SkuPropertyValue();
        SkuProperty skuProperty = new SkuProperty();
        skuProperty.setId(skuPropertyId);
        skuPropertyValue.setSkuProperty(skuProperty);
        skuPropertyValue.setSequence(0);

        //1判断id数组是否有值,有则是新增
        if (skuPropertyValIndex != null && skuPropertyValIndex.compareTo(0) > 0 && skuPropertyValIndex < valLength) {
            //2.判断id数组长度,从value数组中开始从id.length开始获取参数,保存到数据库中
            for (int i = skuPropertyValIndex.intValue(); i < valLength; i++) {
                skuPropertyValue.setValue(skuValues[i]);
                skuPropertyValueMapper.insert(skuPropertyValue);
            }
            //3.如果没有,判断value数组是否有值,有则将value数组中所有的参数保存到数据库中
        } else if (skuPropertyValIndex != null && skuPropertyValIndex.equals(0)) {
            for (String skuValue : skuValues) {
                skuPropertyValue.setValue(skuValue);
                skuPropertyValueMapper.insert(skuPropertyValue);
            }
        }
    }

    @Override
    public List<SkuPropertyValue> selectAll() {
        return skuPropertyValueMapper.selectAll();
    }
}
